1. Field of the Invention
The present invention relates to data processing systems which rely on programmable logic devices for execution of a sequence of instructions. In particular, the present invention applies to programmable logic devices which store a plurality of configuration words, and execute instructions which include a control field for selecting one of the plurality of configuration words for use in a current execution cycle.
2. Description of Related Art
Programmable logic devices such as field programmable gate arrays ("FPGAs") are a well known type of integrated circuit and are of wide applicability due to the flexibility provided by their reprogrammable nature. An FPGA typically includes an array of configurable logic blocks (CLBs) that are programmably interconnected to each other to provide logic functions desired by a user (a circuit designer). An FPGA typically includes a regular array of identical CLBs, wherein each CLB is individually programmed to perform any one of a number of different logic functions. The FPGA has a configurable routing structure for interconnecting the CLBs according to the desired user circuit design. The FPGA also includes a number of configuration memory cells which are coupled to the CLBs to specify the function to be performed by each CLB, as well as to the configurable routing structure to specify the coupling of the input and output lines of each CLB. The FPGA may also include data storage memory cells accessible by a user during operation of the FPGA. The Xilinx, Inc. 1994 publication entitled "The Programmable Logic Data Book" describes several FPGA products and other programmable logic devices and is herein incorporated by reference in its entirety.
One approach available in the prior art to increase the complexity and size of logic circuits has been coupling multiple FPGAs (i.e. multiple chips) by external connections. However, due to the limited number of input/output connections, i.e. pins, between the FPGAs, not all circuits can be implemented using this approach. Moreover, using more than one FPGA undesirably increases power consumption, cost, and space to implement the user circuit design.
Another known solution has been increasing the number of CLBs and interconnect structures in the FPGA. However, for any given semiconductor fabrication technology, there are limitations to the number of CLBs that can be fabricated on an integrated circuit chip of practical size. Thus, there continues to be a need to increase the number of logic gates or CLB densities for FPGAs.
Reconfiguring an FPGA to perform different logic functions at different times is known in the art. However, this reconfiguration requires the time consuming step of reloading a configuration bit stream for each reconfiguration. Moreover, reconfiguration of a prior art FPGA generally requires suspending the implementation of the logic functions, saving the current state of the logic functions in a memory device external to the FPGA, reloading the entire array of memory configurations cells, and inputting the states of the logic functions which have been saved off chip along with any other needed inputs. Each of these steps requires a significant amount of time, thereby rendering reconfiguration impractical for implementing typical circuits.
Thus, as described in U.S. Pat. No. 5,646,545 entitled TIME MULTIPLEXED PROGRAMMABLE LOGIC DEVICE, invented by Stephen M. Trimberger, Richard A. Carberry, Robert Anders Johnson, and Jennifer Wong, programmable logic devices have been developed in which a plurality of configuration words are stored on the device. The programmable logic device switches between configurations sequentially, by random access, or on command from an external or internal signal. This switching is called "flash reconfiguration". Flash reconfiguration allows the PLD to function in one of N configurations, where N is equal to the number of memory cells assigned to each programmable point, or the number of configuration words stored simultaneously on the PLD. Thus, assuming eight configuration words on the PLD, the PLD implements eight times the amount of logic, executable in a time shared fashion, than is actually contained in any one configuration.
It is desirable to extend the flash reconfigurable programmable logic device architecture to general purpose processing structures, such as for use in sequential processing of instructions.